import sys
import os
import logging
from datetime import datetime

# 获取当前文件所在目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取项目根目录（即src的父目录）
project_root = os.path.dirname(os.path.dirname(current_dir))
# 添加项目根目录到Python路径
sys.path.append(project_root)

# 本地模块
from src.main import HanYuePackagingTool
from src.config.constants import DEBUG_DIR

class AutoDebugTool:
    """自动化调试工具"""
    
    def __init__(self):
        """初始化调试工具"""
        # 设置基本日志
        logging.basicConfig(
            level=logging.INFO,
            format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
            handlers=[
                logging.FileHandler("application.log", encoding="utf-8"),
                logging.StreamHandler()
            ]
        )
        
        # 获取完整的调试目录路径
        self.debug_dir = os.path.join(project_root, DEBUG_DIR)
        os.makedirs(self.debug_dir, exist_ok=True)
        
        self.logger = logging.getLogger('auto_debug')
        self.logger.info("自动化调试工具初始化完成")
        
        # 设置默认文件路径
        self.task_file = os.path.join(
            os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
            "..", ".trae", "rules", "瀚的发货用包装箱任务.xlsx"
        )
        
        self.history_file = os.path.join(
            os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
            "..", ".trae", "rules", "瀚越已发货包装数据总表.xlsx"
        )
    
    def run(self):
        """运行自动化调试"""
        print("瀚越包装工具 - 自动化调试模式")
        print("=" * 60)
        
        print(f"使用的任务数据文件: {self.task_file}")
        print(f"使用的历史数据文件: {self.history_file}")
        print(f"调试目录: {self.debug_dir}")
        print("=" * 60)
        
        try:
            # 创建包装工具实例
            tool = HanYuePackagingTool()
            
            # 运行数据处理流程
            print("开始执行完整的数据处理流程...")
            print("(这将自动处理数据并导出结果，无需手动输入)")
            print("=" * 60)
            
            # 使用默认文件路径运行
            result = tool.run(task_file=self.task_file, history_file=self.history_file)
            
            # 显示结果
            if result:
                print("\n✅ 调试完成！程序执行成功。")
                print(f"处理结果文件: {result}")
            else:
                print("\n❌ 调试失败！程序执行过程中出现错误。")
            
        except Exception as e:
            print(f"\n❌ 自动化调试过程中发生异常: {str(e)}")
            import traceback
            traceback.print_exc()
            self.logger.error(f"调试异常: {str(e)}", exc_info=True)

if __name__ == "__main__":
    # 创建并运行调试工具
    debug_tool = AutoDebugTool()
    debug_tool.run()